#ifndef _MESSAGE_H_
#define _MESSAGE_H_
#include<string>
#include<iostream>
#include<sstream>
#include"public.h"

class Message{
private:
    std::string m_coloredHeader;//打印到终端里
    std::string m_commonHeader;//打印到日志里
    std::string  m_msg;//
    std::string FormatFieldWithColor(COLOR_NUMBER colorNumber,bool dark,const std::string& delimiter,const std::string& fieldName,bool colored=true);
public:
    Message(LOG_LEVEL level,const std::string& absoluteFileName,const std::string&functionName,int lineNUmber);//初始化参数
    std::string FormatHeader(LOG_LEVEL level,const std::string& fileName,const std::string& functionName,int lineNumber,bool colored=true);//字段格式化
    std::string Tostring(bool colored=true)const;

    template <typename T>//解决消息体第一个字符丢失的问题?
    Message&operator<<(const T&t)
    {
        std::stringstream ss;
        ss<<t;
        m_msg+=ss.str();
        return *this;
    }
};

#endif